python 实现穷举组合

您所在的位置:网站首页 python 数字组合 python 实现穷举组合

python 实现穷举组合

2023-11-17 17:42| 来源: 网络整理| 查看: 265

最近进行一项统计需要穷举一个列表元素的所有组合,通过查询以及自己摸索,总结出了一下三种方法: 方法1: 通过循环迭代的方式返回结果

def PowerSetsRecursive(items): subsets = [] first_elt = items[0] #first element rest_list = items[1:] for partial_sebset in PowerSetsRecursive(rest_list): subsets.append(partial_sebset) next_subset = partial_sebset[:] +[first_elt] subsets.append(next_subset) return subsets

方法2: 也是通过循环迭代的方式进行列举,不过代码更精炼

def PowerSetsRecursive2(items): result = [[]] for x in items: result.extend([subset + [x] for subset in result]) return result

方法3: 通过位运算符的方式,值得好好研究一下

def PowerSetsBinary(items): N = len(items) for i in range(2**N): combo = [] for j in range(N): if(i >> j ) % 2 == 1: combo.append(items[j]) print(combo)

方法4: 我对方法3研究的过程中受到启发,其实穷举组合其实就是二进制每一位0/1组合的过程,所以我自己写了一个更容易理解的

n=len(items) for i in range(2**n): aa=str(bin(i))[2:].rjust(4,'0') # 转化为2进制,并补全左侧位数 combo=[] for j in range(len(aa)): if aa[j]=='1': combo.append(items[j]) print(combo)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3